/**
 * 调整SVG的文本大小以适应给定的最大宽度和最大高度。
 * @param {SVGElement} svgElement - SVG元素。
 * @param {SVGTextElement} textElement - SVG文本元素。
 * @param {number} maxWidth - 最大宽度。
 * @param {number} maxHeight - 最大高度。
 */
function resizeText(svgElement, textElement, maxWidth, maxHeight) {
    let fontSize = parseInt(getComputedStyle(textElement).fontSize);
    let textWidth = textElement.getBBox().width;
    let textHeight = textElement.getBBox().height;

    // 字号过大时，每次减少2个单位，同时确保字号不小于6px
    while (textWidth > maxWidth || textHeight > maxHeight) {
        fontSize = Math.max(fontSize - 2, 6); // 确保最小字体大小为6px
        textElement.style.fontSize = fontSize + 'px';
        textWidth = textElement.getBBox().width;
        textHeight = textElement.getBBox().height;
        if (fontSize === 6) {
            break; // 如果已经达到最小字号，停止循环
        }
    }

    // 字号过小时，每次增加2个单位
    // while (textWidth < maxWidth - 10 && textHeight < maxHeight - 10) {
    //     fontSize += 2;
    //     textElement.style.fontSize = fontSize + 'px';
    //     textWidth = textElement.getBBox().width;
    //     textHeight = textElement.getBBox().height;
    // }
}

// 定义默认字体大小常量
const DEFAULT_FONT_SIZE = 16;

/**
 * 对SVG中的文本元素进行自动换行处理
 * @param {SVGElement} svg - SVG元素
 * @param {number} maxWidth - 最大宽度
 * @param {number} maxHeight - 最大高度
 */
function wrapTextInSvg(svg, maxWidth, maxHeight) {
    const textElements = svg.querySelectorAll('text');
    textElements.forEach(textElement => {
        const text = textElement.textContent;
        const lines = text.split('\n'); // 处理多行文本
        let yOffset = 0;
        const xValue = textElement.getAttribute('x') || '0';
        const yValue = textElement.getAttribute('y') || '0';
        const fontSize = parseInt(getComputedStyle(textElement).fontSize) || DEFAULT_FONT_SIZE;

        lines.forEach(line => {
            const words = line.split(/\s+/); // 支持多种分隔符
            let currentLine = '';
            words.forEach((word, index) => {
                const testLine = currentLine ? `${currentLine} ${word}` : word;
                const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');
                tspan.textContent = testLine;
                tspan.setAttribute('x', xValue);
                tspan.setAttribute('y', parseInt(yValue) + yOffset);
                textElement.appendChild(tspan);

                if (tspan.getComputedTextLength() > maxWidth) {
                    // 如果超过最大宽度，进行换行
                    currentLine = word;
                    yOffset += fontSize;
                    tspan.textContent = word;
                } else {
                    currentLine = testLine;
                }
            });
            yOffset += fontSize; // 处理完一行后，增加垂直偏移量
        });

        // textElement.textContent = ''; // 清空原文本内容
    });
}